A fundamental problem in using the Transmission Control Protocol/Internet Protocol suite (TCP/IP) over wireless networks is TCP's default behavior in interpreting packet losses as a sign of network congestion. While this assumption is useful in wired networks, where packet losses are mainly caused by buffering limits in routers, it causes problems in wireless networks. This is because in wireless networks, packet losses can occur due to issues such as fading, attenuation, and collisions, problems unique to using the air as the transmission channel.
These packet losses can unnecessarily restrict performance, leaving the wireless channel under-utilized. There have thus been approaches to mitigate this problem by decoupling packet loss from congestion control, through two approaches:
1. modifying the end-host TCP protocol stack, or
2. inserting a middlebox device known as a performance-enhancing proxy (PEP) close to the wireless link.
The first approach is difficult to deploy since it relies on upgrading all the clients and all the servers that utilize the wireless link, typically an extremely difficult process due to the wide variety of mobile devices and server operating systems.
The second approach is easier to deploy, as it can be done incrementally, and transparently to the client and server.
Performance enhancing proxies (PEPs) come in many forms (link level, TCP level, HTTP proxies), but a convenient approach is at the TCP layer, as it benefits all TCP traffic (which is the bulk of the traffic on the Internet).
TCP PEPs fall into two categories: Split-TCP and Snoop-TCP. Both improve performance over wireless links, albeit in different ways, and have different advantages and disadvantages.
Split TCP terminates the TCP connection at the PEP, either explicitly (using different IP addresses and TCP port numbers), or implicitly (by using the same IP addresses and masquerading as the server to the client and as the client to the server).
Snoop TCP is an intelligent TCP-aware packet cache that monitors a TCP conversation, determines when a packet has been lost (before the original sender does), and retransmits that packet on behalf of the sender.
Snoop TCP is closer to the receiver than the sender is, this allows quicker loss recovery and thus better performance. It does not terminate TCP connections.
Snoop TCP has the following advantages:
1) It allows quicker loss recovery over the wireless link.
2) It does not violate any TCP semantics.
3) It requires fewer resources (CPU and memory/state) than Split TCP.
4) It is harder to detect, since it causes fewer changes to the TCP connection behavior.
Both Split TCP and Snoop share a significant limitation: they assume packet reordering can occur in networks, which limits performance.
That is, the TCP protocol assumes packet reordering can happen in arbitrary networks (see, for example, Internet Engineering Task Force RFCs 2001, 5681), and hence requires three (3) indications of loss (the “triple-duplicate-ACK”) before the sender can retransmit a packet.
Many wireless networks however are 1-hop networks where packet reordering is not possible (e.g., WiFi, Satellite, cellular).
It would be highly desirable to increase the efficiency of TCP protocol operations at the middlebox by assuming there is no reordering over the wireless hop.